package dao;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//封装数据库代码，封装DButil,实现建立和断开连接
public class DBUtil {
    //为了一些线程的安全，网页肯定大数据高并发
    private static volatile DataSource dataSource=null;
    private static  DataSource getDataSource(){
        if(dataSource==null){
            synchronized (DBUtil.class){
                if(dataSource==null){
                    dataSource=new MysqlDataSource();
                    //IP:127.0.0.1不必修改部署上去，此时博客系统和数据库服务器也是在同一个主机上，仍然可以通过127来访问
                    ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java108_blog_system?useSSL=false&characterEncoding=utf8");
                    ((MysqlDataSource)dataSource).setUser("root");
                    //确保密码和云服务器的数据库密码一致，一般来说刚安装的话,mysql密码默认是""
                    ((MysqlDataSource)dataSource).setPassword("lcl15604007179");
                }
        }
    }
        return dataSource;
    }
    //提供一个方法和数据库建立连接
    public  static Connection getConnection(){
        try{
            return getDataSource().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    //提供一个方法，和数据库断开连接
    public  static  void close(Connection connection, PreparedStatement statement, ResultSet resultSet){
        //如果三个close都放到try中，一旦前面的close出现异常，就会导致后续的close执行不到了。
        if(resultSet!=null){
            try {
                resultSet.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        if(statement!=null){
            try{
                statement.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        if (connection!=null){
            try{
                connection.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
}
